iT邦幫忙

2022 iThome 鐵人賽

DAY 12
0
Modern Web

Javascripts惡補小教室系列 第 12

Day12 Javascript this關鍵字

  • 分享至 

  • xImage
  •  

首先,看到這個標題,沒接觸過Javascript的朋友們腦袋一定有個問號,那就是this是甚麼呢? 這個看似簡單的英文單字,可是Js裡面非常重要的觀念!而在這之前我們要了解物件方法是甚麼,就可以知道到this是如何運作的,呼叫方法時出來的值會是甚麼,讓我們先來看看物件方法吧!

在前面的文章中提過物件的屬性,白話點來說物件就像我們現實生活中事物,像是人會有身高、體重,車子會有型號、顏色、廠牌等等,而今天我們要新增方法的話,就是透過物件去呼叫這個方法,例如:

物件方法
定義一個物件

      const person = {
        name: "jason",
      };

今天要在person這個物件裡增加方法(動作),就是所謂的物件方法。

      const person = {
        name: "jason",
      };

      person.action = function () {
        console.log("hello,jason");
      };

      person.action();            //hello,jason

如果覺得這樣看起來很複雜的話,其實跟以下的程式碼是同個意思。

      const person = {
        name: "jason",
        action: function () {
          console.log("hello,jason");
        },
      };

      person.action();

this
介紹完了物件方法(函數)以後,我們就要來看this是做甚麼用的,如果我今天想要在方法裡面存取物件(person)自身的內容,這時候this就必須要大顯神威拉!this的功用就是在物件方法中存取物件本身的屬性。
範例:

      const person = {
        name: "jason",
        action: function () {
          console.log("hello,my name is " + this.name);
        },
      };

      person.action();

這個例子讓我們了解到這時候的this其實就是物件(person)本身,那為甚麼this會是person物件,因為我們看到最後一行,呼叫action方法的物件就是person物件,造成這邊的this就是person物件。

下面這個例子可以讓我們更加理解,不同的物件呼叫同個方法會有甚麼結果
範例:

      const person1 = {
        name: "jason",
      };

      const person2 = {
        name: "leo",
      };

      function action() {
        console.log("hello,my name is " + this.name);
      }
      person1.action = action;
      person2.action = action;

      person1.action();            //hello,my name is jason
      person2.action();            //hello,my name is leo

雖然都是this.name,但透過不同的物件(person1、person2)呼叫,儘管是同個方法,可就會是不同的結果。會依造你呼叫的物件所決定。

介紹完對this的用法,有沒有稍微更了解一點呢?下一篇我們要繼續介紹箭頭函數。


上一篇
Day11 Javascript陣列方法
下一篇
Day13 箭頭函數
系列文
Javascripts惡補小教室30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言